/*
Copyright (c) 2014-2017 Banana Pi

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/

#ifndef BPIGPIO_H
#define BPIGPIO_H
#define GPIO_PA00	0
#define GPIO_PA01	1
#define GPIO_PA02	2
#define GPIO_PA03	3
#define GPIO_PA04	4
#define GPIO_PA05	5
#define GPIO_PA06	6
#define GPIO_PA07	7
#define GPIO_PA08	8
#define GPIO_PA09	9
#define GPIO_PA10	10
#define GPIO_PA11	11
#define GPIO_PA12	12
#define GPIO_PA13	13
#define GPIO_PA14	14
#define GPIO_PA15	15
#define GPIO_PA16	16
#define GPIO_PA17	17
#define GPIO_PA18	18
#define GPIO_PA19	19
#define GPIO_PA20	20
#define GPIO_PA21	21
#define GPIO_PA22	22
#define GPIO_PA23	23
#define GPIO_PA24	24
#define GPIO_PA25	25
#define GPIO_PA26	26
#define GPIO_PA27	27
#define GPIO_PA28	28
#define GPIO_PA29	29
#define GPIO_PA30	30
#define GPIO_PA31	31

#define GPIO_PB00	32
#define GPIO_PB01	1 + GPIO_PB00
#define GPIO_PB02	2 + GPIO_PB00
#define GPIO_PB03	3 + GPIO_PB00
#define GPIO_PB04	4 + GPIO_PB00
#define GPIO_PB05	5 + GPIO_PB00
#define GPIO_PB06	6 + GPIO_PB00
#define GPIO_PB07	7 + GPIO_PB00
#define GPIO_PB08	8 + GPIO_PB00
#define GPIO_PB09	9 + GPIO_PB00
#define GPIO_PB10	10 + GPIO_PB00
#define GPIO_PB11	11 + GPIO_PB00
#define GPIO_PB12	12 + GPIO_PB00
#define GPIO_PB13	13 + GPIO_PB00
#define GPIO_PB14	14 + GPIO_PB00
#define GPIO_PB15	15 + GPIO_PB00
#define GPIO_PB16	16 + GPIO_PB00
#define GPIO_PB17	17 + GPIO_PB00
#define GPIO_PB18	18 + GPIO_PB00
#define GPIO_PB19	19 + GPIO_PB00
#define GPIO_PB20	20 + GPIO_PB00
#define GPIO_PB21	21 + GPIO_PB00
#define GPIO_PB22	22 + GPIO_PB00
#define GPIO_PB23	23 + GPIO_PB00
#define GPIO_PB24	24 + GPIO_PB00
#define GPIO_PB25	25 + GPIO_PB00
#define GPIO_PB26	26 + GPIO_PB00
#define GPIO_PB27	27 + GPIO_PB00
#define GPIO_PB28	28 + GPIO_PB00
#define GPIO_PB29	29 + GPIO_PB00
#define GPIO_PB30	30 + GPIO_PB00
#define GPIO_PB31	31 + GPIO_PB00

#define GPIO_PC00	64
#define GPIO_PC01	1 + GPIO_PC00
#define GPIO_PC02	2 + GPIO_PC00
#define GPIO_PC03	3 + GPIO_PC00
#define GPIO_PC04	4 + GPIO_PC00
#define GPIO_PC05	5 + GPIO_PC00
#define GPIO_PC06	6 + GPIO_PC00
#define GPIO_PC07	7 + GPIO_PC00
#define GPIO_PC08	8 + GPIO_PC00
#define GPIO_PC09	9 + GPIO_PC00
#define GPIO_PC10	10 + GPIO_PC00
#define GPIO_PC11	11 + GPIO_PC00
#define GPIO_PC12	12 + GPIO_PC00
#define GPIO_PC13	13 + GPIO_PC00
#define GPIO_PC14	14 + GPIO_PC00
#define GPIO_PC15	15 + GPIO_PC00
#define GPIO_PC16	16 + GPIO_PC00
#define GPIO_PC17	17 + GPIO_PC00
#define GPIO_PC18	18 + GPIO_PC00
#define GPIO_PC19	19 + GPIO_PC00
#define GPIO_PC20	20 + GPIO_PC00
#define GPIO_PC21	21 + GPIO_PC00
#define GPIO_PC22	22 + GPIO_PC00
#define GPIO_PC23	23 + GPIO_PC00
#define GPIO_PC24	24 + GPIO_PC00
#define GPIO_PC25	25 + GPIO_PC00
#define GPIO_PC26	26 + GPIO_PC00
#define GPIO_PC27	27 + GPIO_PC00
#define GPIO_PC28	28 + GPIO_PC00
#define GPIO_PC29	29 + GPIO_PC00
#define GPIO_PC30	30 + GPIO_PC00
#define GPIO_PC31	31 + GPIO_PC00

#define GPIO_PD00	96
#define GPIO_PD01	1 + GPIO_PD00
#define GPIO_PD02	2 + GPIO_PD00
#define GPIO_PD03	3 + GPIO_PD00
#define GPIO_PD04	4 + GPIO_PD00
#define GPIO_PD05	5 + GPIO_PD00
#define GPIO_PD06	6 + GPIO_PD00
#define GPIO_PD07	7 + GPIO_PD00
#define GPIO_PD08	8 + GPIO_PD00
#define GPIO_PD09	9 + GPIO_PD00
#define GPIO_PD10	10 + GPIO_PD00
#define GPIO_PD11	11 + GPIO_PD00
#define GPIO_PD12	12 + GPIO_PD00
#define GPIO_PD13	13 + GPIO_PD00
#define GPIO_PD14	14 + GPIO_PD00
#define GPIO_PD15	15 + GPIO_PD00
#define GPIO_PD16	16 + GPIO_PD00
#define GPIO_PD17	17 + GPIO_PD00
#define GPIO_PD18	18 + GPIO_PD00
#define GPIO_PD19	19 + GPIO_PD00
#define GPIO_PD20	20 + GPIO_PD00
#define GPIO_PD21	21 + GPIO_PD00
#define GPIO_PD22	22 + GPIO_PD00
#define GPIO_PD23	23 + GPIO_PD00
#define GPIO_PD24	24 + GPIO_PD00
#define GPIO_PD25	25 + GPIO_PD00
#define GPIO_PD26	26 + GPIO_PD00
#define GPIO_PD27	27 + GPIO_PD00
#define GPIO_PD28	28 + GPIO_PD00
#define GPIO_PD29	29 + GPIO_PD00
#define GPIO_PD30	30 + GPIO_PD00
#define GPIO_PD31	31 + GPIO_PD00

#define GPIO_PE00	128
#define GPIO_PE01	1 + GPIO_PE00
#define GPIO_PE02	2 + GPIO_PE00
#define GPIO_PE03	3 + GPIO_PE00
#define GPIO_PE04	4 + GPIO_PE00
#define GPIO_PE05	5 + GPIO_PE00
#define GPIO_PE06	6 + GPIO_PE00
#define GPIO_PE07	7 + GPIO_PE00
#define GPIO_PE08	8 + GPIO_PE00
#define GPIO_PE09	9 + GPIO_PE00
#define GPIO_PE10	10 + GPIO_PE00
#define GPIO_PE11	11 + GPIO_PE00
#define GPIO_PE12	12 + GPIO_PE00
#define GPIO_PE13	13 + GPIO_PE00
#define GPIO_PE14	14 + GPIO_PE00
#define GPIO_PE15	15 + GPIO_PE00
#define GPIO_PE16	16 + GPIO_PE00
#define GPIO_PE17	17 + GPIO_PE00
#define GPIO_PE18	18 + GPIO_PE00
#define GPIO_PE19	19 + GPIO_PE00
#define GPIO_PE20	20 + GPIO_PE00
#define GPIO_PE21	21 + GPIO_PE00
#define GPIO_PE22	22 + GPIO_PE00
#define GPIO_PE23	23 + GPIO_PE00
#define GPIO_PE24	24 + GPIO_PE00
#define GPIO_PE25	25 + GPIO_PE00
#define GPIO_PE26	26 + GPIO_PE00
#define GPIO_PE27	27 + GPIO_PE00
#define GPIO_PE28	28 + GPIO_PE00
#define GPIO_PE29	29 + GPIO_PE00
#define GPIO_PE30	30 + GPIO_PE00
#define GPIO_PE31	31 + GPIO_PE00

#define GPIO_PG00	192
#define GPIO_PG01	1 + GPIO_PG00
#define GPIO_PG02	2 + GPIO_PG00
#define GPIO_PG03	3 + GPIO_PG00
#define GPIO_PG04	4 + GPIO_PG00
#define GPIO_PG05	5 + GPIO_PG00
#define GPIO_PG06	6 + GPIO_PG00
#define GPIO_PG07	7 + GPIO_PG00
#define GPIO_PG08	8 + GPIO_PG00
#define GPIO_PG09	9 + GPIO_PG00
#define GPIO_PG10	10 + GPIO_PG00
#define GPIO_PG11	11 + GPIO_PG00
#define GPIO_PG12	12 + GPIO_PG00
#define GPIO_PG13	13 + GPIO_PG00
#define GPIO_PG14	14 + GPIO_PG00
#define GPIO_PG15	15 + GPIO_PG00
#define GPIO_PG16	16 + GPIO_PG00
#define GPIO_PG17	17 + GPIO_PG00
#define GPIO_PG18	18 + GPIO_PG00
#define GPIO_PG19	19 + GPIO_PG00
#define GPIO_PG20	20 + GPIO_PG00
#define GPIO_PG21	21 + GPIO_PG00
#define GPIO_PG22	22 + GPIO_PG00
#define GPIO_PG23	23 + GPIO_PG00
#define GPIO_PG24	24 + GPIO_PG00
#define GPIO_PG25	25 + GPIO_PG00
#define GPIO_PG26	26 + GPIO_PG00
#define GPIO_PG27	27 + GPIO_PG00
#define GPIO_PG28	28 + GPIO_PG00
#define GPIO_PG29	29 + GPIO_PG00
#define GPIO_PG30	30 + GPIO_PG00
#define GPIO_PG31	31 + GPIO_PG00

#define GPIO_PH00	224
#define GPIO_PH01	1 + GPIO_PH00
#define GPIO_PH02	2 + GPIO_PH00
#define GPIO_PH03	3 + GPIO_PH00
#define GPIO_PH04	4 + GPIO_PH00
#define GPIO_PH05	5 + GPIO_PH00
#define GPIO_PH06	6 + GPIO_PH00
#define GPIO_PH07	7 + GPIO_PH00
#define GPIO_PH08	8 + GPIO_PH00
#define GPIO_PH09	9 + GPIO_PH00
#define GPIO_PH10	10 + GPIO_PH00
#define GPIO_PH11	11 + GPIO_PH00
#define GPIO_PH12	12 + GPIO_PH00
#define GPIO_PH13	13 + GPIO_PH00
#define GPIO_PH14	14 + GPIO_PH00
#define GPIO_PH15	15 + GPIO_PH00
#define GPIO_PH16	16 + GPIO_PH00
#define GPIO_PH17	17 + GPIO_PH00
#define GPIO_PH18	18 + GPIO_PH00
#define GPIO_PH19	19 + GPIO_PH00
#define GPIO_PH20	20 + GPIO_PH00
#define GPIO_PH21	21 + GPIO_PH00
#define GPIO_PH22	22 + GPIO_PH00
#define GPIO_PH23	23 + GPIO_PH00
#define GPIO_PH24	24 + GPIO_PH00
#define GPIO_PH25	25 + GPIO_PH00
#define GPIO_PH26	26 + GPIO_PH00
#define GPIO_PH27	27 + GPIO_PH00
#define GPIO_PH28	28 + GPIO_PH00
#define GPIO_PH29	29 + GPIO_PH00
#define GPIO_PH30	30 + GPIO_PH00
#define GPIO_PH31	31 + GPIO_PH00

#define GPIO_PI00	256
#define GPIO_PI01	1 + GPIO_PI00
#define GPIO_PI02	2 + GPIO_PI00
#define GPIO_PI03	3 + GPIO_PI00
#define GPIO_PI04	4 + GPIO_PI00
#define GPIO_PI05	5 + GPIO_PI00
#define GPIO_PI06	6 + GPIO_PI00
#define GPIO_PI07	7 + GPIO_PI00
#define GPIO_PI08	8 + GPIO_PI00
#define GPIO_PI09	9 + GPIO_PI00
#define GPIO_PI10	10 + GPIO_PI00
#define GPIO_PI11	11 + GPIO_PI00
#define GPIO_PI12	12 + GPIO_PI00
#define GPIO_PI13	13 + GPIO_PI00
#define GPIO_PI14	14 + GPIO_PI00
#define GPIO_PI15	15 + GPIO_PI00
#define GPIO_PI16	16 + GPIO_PI00
#define GPIO_PI17	17 + GPIO_PI00
#define GPIO_PI18	18 + GPIO_PI00
#define GPIO_PI19	19 + GPIO_PI00
#define GPIO_PI20	20 + GPIO_PI00
#define GPIO_PI21	21 + GPIO_PI00
#define GPIO_PI22	22 + GPIO_PI00
#define GPIO_PI23	23 + GPIO_PI00
#define GPIO_PI24	24 + GPIO_PI00
#define GPIO_PI25	25 + GPIO_PI00
#define GPIO_PI26	26 + GPIO_PI00
#define GPIO_PI27	27 + GPIO_PI00
#define GPIO_PI28	28 + GPIO_PI00
#define GPIO_PI29	29 + GPIO_PI00
#define GPIO_PI30	30 + GPIO_PI00
#define GPIO_PI31	31 + GPIO_PI00

#define GPIO_PL00	352
#define GPIO_PL01	1 + GPIO_PL00
#define GPIO_PL02	2 + GPIO_PL00
#define GPIO_PL03	3 + GPIO_PL00
#define GPIO_PL04	4 + GPIO_PL00
#define GPIO_PL05	5 + GPIO_PL00
#define GPIO_PL06	6 + GPIO_PL00
#define GPIO_PL07	7 + GPIO_PL00
#define GPIO_PL08	8 + GPIO_PL00
#define GPIO_PL09	9 + GPIO_PL00
#define GPIO_PL10	10 + GPIO_PL00
#define GPIO_PL11	11 + GPIO_PL00
#define GPIO_PL12	12 + GPIO_PL00
#define GPIO_PL13	13 + GPIO_PL00
#define GPIO_PL14	14 + GPIO_PL00
#define GPIO_PL15	15 + GPIO_PL00
#define GPIO_PL16	16 + GPIO_PL00
#define GPIO_PL17	17 + GPIO_PL00
#define GPIO_PL18	18 + GPIO_PL00
#define GPIO_PL19	19 + GPIO_PL00
#define GPIO_PL20	20 + GPIO_PL00
#define GPIO_PL21	21 + GPIO_PL00
#define GPIO_PL22	22 + GPIO_PL00
#define GPIO_PL23	23 + GPIO_PL00
#define GPIO_PL24	24 + GPIO_PL00
#define GPIO_PL25	25 + GPIO_PL00
#define GPIO_PL26	26 + GPIO_PL00
#define GPIO_PL27	27 + GPIO_PL00
#define GPIO_PL28	28 + GPIO_PL00
#define GPIO_PL29	29 + GPIO_PL00
#define GPIO_PL30	30 + GPIO_PL00
#define GPIO_PL31	31 + GPIO_PL00

#define GPIO_PM00	384
#define GPIO_PM01	1 + GPIO_PM00
#define GPIO_PM02	2 + GPIO_PM00
#define GPIO_PM03	3 + GPIO_PM00
#define GPIO_PM04	4 + GPIO_PM00
#define GPIO_PM05	5 + GPIO_PM00
#define GPIO_PM06	6 + GPIO_PM00
#define GPIO_PM07	7 + GPIO_PM00
#define GPIO_PM08	8 + GPIO_PM00
#define GPIO_PM09	9 + GPIO_PM00
#define GPIO_PM10	10 + GPIO_PM00
#define GPIO_PM11	11 + GPIO_PM00
#define GPIO_PM12	12 + GPIO_PM00
#define GPIO_PM13	13 + GPIO_PM00
#define GPIO_PM14	14 + GPIO_PM00
#define GPIO_PM15	15 + GPIO_PM00
#define GPIO_PM16	16 + GPIO_PM00
#define GPIO_PM17	17 + GPIO_PM00
#define GPIO_PM18	18 + GPIO_PM00
#define GPIO_PM19	19 + GPIO_PM00
#define GPIO_PM20	20 + GPIO_PM00
#define GPIO_PM21	21 + GPIO_PM00
#define GPIO_PM22	22 + GPIO_PM00
#define GPIO_PM23	23 + GPIO_PM00
#define GPIO_PM24	24 + GPIO_PM00
#define GPIO_PM25	25 + GPIO_PM00
#define GPIO_PM26	26 + GPIO_PM00
#define GPIO_PM27	27 + GPIO_PM00
#define GPIO_PM28	28 + GPIO_PM00
#define GPIO_PM29	29 + GPIO_PM00
#define GPIO_PM30	30 + GPIO_PM00
#define GPIO_PM31	31 + GPIO_PM00

#if 1 //BPI-M2P
#define	BPIPIN_01	-1
#define	BPIPIN_03	GPIO_PA12
#define	BPIPIN_05	GPIO_PA11
#define	BPIPIN_07	GPIO_PA06
#define	BPIPIN_09	-1
#define	BPIPIN_11	GPIO_PA01
#define	BPIPIN_13	GPIO_PA00
#define	BPIPIN_15	GPIO_PA03
#define	BPIPIN_17	-1
#define	BPIPIN_19	GPIO_PC00
#define	BPIPIN_21	GPIO_PC01
#define	BPIPIN_23	GPIO_PC02
#define	BPIPIN_25	-1
#define	BPIPIN_27	GPIO_PA19
#define	BPIPIN_29	GPIO_PA07
#define	BPIPIN_31	GPIO_PA08
#define	BPIPIN_33	GPIO_PA09
#define	BPIPIN_35	GPIO_PA10
#define	BPIPIN_37	GPIO_PA17
#define	BPIPIN_39	-1

#define	BPIPIN_02	-1
#define	BPIPIN_04	-1
#define	BPIPIN_06	-1
#define	BPIPIN_08	GPIO_PA13
#define	BPIPIN_10	GPIO_PA14
#define	BPIPIN_12	GPIO_PA16
#define	BPIPIN_14	-1
#define	BPIPIN_16	GPIO_PA15
#define	BPIPIN_18	GPIO_PC04
#define	BPIPIN_20	-1
#define	BPIPIN_22	GPIO_PA02
#define	BPIPIN_24	GPIO_PC03
#define	BPIPIN_26	GPIO_PC07
#define	BPIPIN_28	GPIO_PA18
#define	BPIPIN_30	-1
#define	BPIPIN_32	GPIO_PL02
#define	BPIPIN_34	-1
#define	BPIPIN_36	GPIO_PL04
#define	BPIPIN_38	GPIO_PA21
#define	BPIPIN_40	GPIO_PA20
#endif

#if 0 //def BPI-M2U
#define	BPIPIN_01	-1
#define	BPIPIN_03	GPIO_PB21
#define	BPIPIN_05	GPIO_PB20
#define	BPIPIN_07	GPIO_PB03
#define	BPIPIN_09	-1
#define	BPIPIN_11	GPIO_PI20
#define	BPIPIN_13	GPIO_PI21
#define	BPIPIN_15	GPIO_PH25
#define	BPIPIN_17	-1
#define	BPIPIN_19	GPIO_PC00
#define	BPIPIN_21	GPIO_PC01
#define	BPIPIN_23	GPIO_PC02
#define	BPIPIN_25	-1
#define	BPIPIN_27	GPIO_PI01
#define	BPIPIN_29	GPIO_PH00
#define	BPIPIN_31	GPIO_PH01
#define	BPIPIN_33	GPIO_PH02
#define	BPIPIN_35	GPIO_PH03
#define	BPIPIN_37	GPIO_PH04
#define	BPIPIN_39	-1

#define	BPIPIN_02	-1
#define	BPIPIN_04	-1
#define	BPIPIN_06	-1
#define	BPIPIN_08	GPIO_PI18
#define	BPIPIN_10	GPIO_PI19
#define	BPIPIN_12	GPIO_PI17
#define	BPIPIN_14	-1
#define	BPIPIN_16	GPIO_PI16
#define	BPIPIN_18	GPIO_PH26
#define	BPIPIN_20	-1
#define	BPIPIN_22	GPIO_PH27
#define	BPIPIN_24	GPIO_PC23
#define	BPIPIN_26	GPIO_PH24
#define	BPIPIN_28	GPIO_PI00
#define	BPIPIN_30	-1
#define	BPIPIN_32	GPIO_PD20
#define	BPIPIN_34	-1
#define	BPIPIN_36	GPIO_PH07
#define	BPIPIN_38	GPIO_PH06
#define	BPIPIN_40	GPIO_PH05
#endif

#if 0 //def BPI-M64
#define	BPIPIN_01	-1
#define	BPIPIN_03	GPIO_PH03
#define	BPIPIN_05	GPIO_PH02
#define	BPIPIN_07	GPIO_PH06
#define	BPIPIN_09	-1
#define	BPIPIN_11	GPIO_PH07
#define	BPIPIN_13	GPIO_PH10
#define	BPIPIN_15	GPIO_PH11
#define	BPIPIN_17	-1
#define	BPIPIN_19	GPIO_PD02
#define	BPIPIN_21	GPIO_PD03
#define	BPIPIN_23	GPIO_PD01
#define	BPIPIN_25	-1
#define	BPIPIN_27	GPIO_PC04
#define	BPIPIN_29	GPIO_PC07
#define	BPIPIN_31	GPIO_PB05
#define	BPIPIN_33	GPIO_PB04
#define	BPIPIN_35	GPIO_PB06
#define	BPIPIN_37	GPIO_PL12
#define	BPIPIN_39	-1

#define	BPIPIN_02	-1
#define	BPIPIN_04	-1
#define	BPIPIN_06	-1
#define	BPIPIN_08	GPIO_PB00
#define	BPIPIN_10	GPIO_PB01
#define	BPIPIN_12	GPIO_PB03
#define	BPIPIN_14	-1
#define	BPIPIN_16	GPIO_PB02
#define	BPIPIN_18	GPIO_PD04
#define	BPIPIN_20	-1
#define	BPIPIN_22	GPIO_PC00
#define	BPIPIN_24	GPIO_PD00
#define	BPIPIN_26	GPIO_PC02
#define	BPIPIN_28	GPIO_PC03
#define	BPIPIN_30	-1
#define	BPIPIN_32	GPIO_PB07
#define	BPIPIN_34	-1
#define	BPIPIN_36	GPIO_PL09
#define	BPIPIN_38	GPIO_PL07
#define	BPIPIN_40	GPIO_PL08
#endif

#if 0 //def BPI-M2M
#define	BPIPIN_01	-1
#define	BPIPIN_03	GPIO_PH05
#define	BPIPIN_05	GPIO_PH04
#define	BPIPIN_07	GPIO_PH01
#define	BPIPIN_09	-1
#define	BPIPIN_11	GPIO_PH06
#define	BPIPIN_13	GPIO_PH07
#define	BPIPIN_15	GPIO_PG12
#define	BPIPIN_17	-1
#define	BPIPIN_19	GPIO_PC00
#define	BPIPIN_21	GPIO_PC01
#define	BPIPIN_23	GPIO_PC02
#define	BPIPIN_25	-1
#define	BPIPIN_27	GPIO_PD19
#define	BPIPIN_29	GPIO_PD18
#define	BPIPIN_31	GPIO_PD21
#define	BPIPIN_33	GPIO_PD20
#define	BPIPIN_35	GPIO_PD25
#define	BPIPIN_37	GPIO_PD24
#define	BPIPIN_39	-1

#define	BPIPIN_02	-1
#define	BPIPIN_04	-1
#define	BPIPIN_06	-1
#define	BPIPIN_08	GPIO_PB00
#define	BPIPIN_10	GPIO_PB01
//#define	BPIPIN_08	-1
//#define	BPIPIN_10	-1
#define	BPIPIN_12	GPIO_PB03
#define	BPIPIN_14	-1
#define	BPIPIN_16	GPIO_PB02
#define	BPIPIN_18	GPIO_PG11
#define	BPIPIN_20	-1
#define	BPIPIN_22	GPIO_PG10
#define	BPIPIN_24	GPIO_PC03
#define	BPIPIN_26	GPIO_PG13
#define	BPIPIN_28	GPIO_PL11
#define	BPIPIN_30	-1
#define	BPIPIN_32	GPIO_PD23
#define	BPIPIN_34	-1
#define	BPIPIN_36	GPIO_PD22
#define	BPIPIN_38	GPIO_PD27
#define	BPIPIN_40	GPIO_PD26
#endif

#if 0 //def BPI-M3
#define	BPIPIN_01	-1
#define	BPIPIN_03	GPIO_PH05
#define	BPIPIN_05	GPIO_PH04
#define	BPIPIN_07	GPIO_PL10
#define	BPIPIN_09	-1
#define	BPIPIN_11	GPIO_PC04
#define	BPIPIN_13	GPIO_PC07
#define	BPIPIN_15	GPIO_PC17
#define	BPIPIN_17	-1
#define	BPIPIN_19	GPIO_PC00
#define	BPIPIN_21	GPIO_PC01
#define	BPIPIN_23	GPIO_PC02
#define	BPIPIN_25	-1
#define	BPIPIN_27	GPIO_PH03
#define	BPIPIN_29	GPIO_PC18
#define	BPIPIN_31	GPIO_PG10
#define	BPIPIN_33	GPIO_PG11
#define	BPIPIN_35	GPIO_PG12
#define	BPIPIN_37	GPIO_PE04
#define	BPIPIN_39	-1

#define	BPIPIN_02	-1
#define	BPIPIN_04	-1
#define	BPIPIN_06	-1
#define	BPIPIN_08	GPIO_PB00
#define	BPIPIN_10	GPIO_PB01
#define	BPIPIN_12	GPIO_PB03
#define	BPIPIN_14	-1
#define	BPIPIN_16	GPIO_PB02
#define	BPIPIN_18	GPIO_PL08
#define	BPIPIN_20	-1
#define	BPIPIN_22	GPIO_PL09
#define	BPIPIN_24	GPIO_PC03
#define	BPIPIN_26	GPIO_PH10
#define	BPIPIN_28	GPIO_PH02
#define	BPIPIN_30	-1
#define	BPIPIN_32	GPIO_PG13
#define	BPIPIN_34	-1
#define	BPIPIN_36	GPIO_PE05
#define	BPIPIN_38	GPIO_PE18
#define	BPIPIN_40	GPIO_PE19
#endif

#if 0 //def BPI-M2
#define	BPIPIN_01	-1
#define	BPIPIN_03	GPIO_PH19
#define	BPIPIN_05	GPIO_PH18
#define	BPIPIN_07	GPIO_PH09
#define	BPIPIN_09	-1
#define	BPIPIN_11	GPIO_PG07
#define	BPIPIN_13	GPIO_PG06
#define	BPIPIN_15	GPIO_PG09
#define	BPIPIN_17	-1
#define	BPIPIN_19	GPIO_PG15
#define	BPIPIN_21	GPIO_PG16
#define	BPIPIN_23	GPIO_PG14
#define	BPIPIN_25	-1
#define	BPIPIN_27	GPIO_PB06
#define	BPIPIN_29	GPIO_PB00
#define	BPIPIN_31	GPIO_PB01
#define	BPIPIN_33	GPIO_PB02
#define	BPIPIN_35	GPIO_PB03
#define	BPIPIN_37	GPIO_PB04
#define	BPIPIN_39	-1

#define	BPIPIN_02	-1
#define	BPIPIN_04	-1
#define	BPIPIN_06	-1
#define	BPIPIN_08	GPIO_PE04
#define	BPIPIN_10	GPIO_PE05
#define	BPIPIN_12	GPIO_PH10
#define	BPIPIN_14	-1
#define	BPIPIN_16	GPIO_PH11
#define	BPIPIN_18	GPIO_PH12
#define	BPIPIN_20	-1
#define	BPIPIN_22	GPIO_PG08
#define	BPIPIN_24	GPIO_PG13
#define	BPIPIN_26	GPIO_PG12
#define	BPIPIN_28	GPIO_PB05
#define	BPIPIN_30	-1
#define	BPIPIN_32	GPIO_PB07
#define	BPIPIN_34	-1
#define	BPIPIN_36	GPIO_PE06
#define	BPIPIN_38	GPIO_PE07
#define	BPIPIN_40	GPIO_PM02
#endif

#if 0 //def BPI-M1P
#define	BPIPIN_01	-1
#define	BPIPIN_03	GPIO_PB21
#define	BPIPIN_05	GPIO_PB20
#define	BPIPIN_07	GPIO_PI03
#define	BPIPIN_09	-1
#define	BPIPIN_11	GPIO_PI19
#define	BPIPIN_13	GPIO_PI18
#define	BPIPIN_15	GPIO_PI17
#define	BPIPIN_17	-1
#define	BPIPIN_19	GPIO_PI12
#define	BPIPIN_21	GPIO_PI13
#define	BPIPIN_23	GPIO_PI11
#define	BPIPIN_25	-1
#define	BPIPIN_27	GPIO_PI01
#define	BPIPIN_29	GPIO_PB05
#define	BPIPIN_31	GPIO_PB06
#define	BPIPIN_33	GPIO_PB07
#define	BPIPIN_35	GPIO_PB08
#define	BPIPIN_37	GPIO_PB03
#define	BPIPIN_39	-1

#define	BPIPIN_02	-1
#define	BPIPIN_04	-1
#define	BPIPIN_06	-1
#define	BPIPIN_08	GPIO_PH00
#define	BPIPIN_10	GPIO_PH01
#define	BPIPIN_12	GPIO_PH02
#define	BPIPIN_14	-1
#define	BPIPIN_16	GPIO_PH20
#define	BPIPIN_18	GPIO_PH21
#define	BPIPIN_20	-1
#define	BPIPIN_22	GPIO_PI16
#define	BPIPIN_24	GPIO_PI10
#define	BPIPIN_26	GPIO_PI14
#define	BPIPIN_28	GPIO_PI00
#define	BPIPIN_30	-1
#define	BPIPIN_32	GPIO_PB12
#define	BPIPIN_34	-1
#define	BPIPIN_36	GPIO_PI21
#define	BPIPIN_38	GPIO_PI20
#define	BPIPIN_40	GPIO_PB13
#endif

#if 0
//map wpi gpio_num(index) to bp bpio_num(element)
const int pinToGpio_BP [64] =
{
   BPIPIN_11, BPIPIN_12,        //0, 1
   BPIPIN_13, BPIPIN_15,        //2, 3
   BPIPIN_16, BPIPIN_18,        //4, 5
   BPIPIN_22, BPIPIN_07,        //6, 7
   BPIPIN_03, BPIPIN_05,        //8, 9
   BPIPIN_24, BPIPIN_26,        //10, 11
   BPIPIN_19, BPIPIN_21,        //12, 13
   BPIPIN_23, BPIPIN_08,        //14, 15
   BPIPIN_10,        -1,        //16, 17
          -1,        -1,        //18, 19
          -1, BPIPIN_29,        //20, 21
   BPIPIN_31, BPIPIN_33,        //22, 23
   BPIPIN_35, BPIPIN_37,        //24, 25
   BPIPIN_32, BPIPIN_36,        //26, 27
   BPIPIN_38, BPIPIN_40,        //28. 29
   BPIPIN_27, BPIPIN_28,        //30, 31
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // ... 47
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // ... 63
} ;

//map bcm gpio_num(index) to bp gpio_num(element)
const int pinTobcm_BP [64] =
{
  BPIPIN_27, BPIPIN_28,  //0, 1
  BPIPIN_03, BPIPIN_05,  //2, 3
  BPIPIN_07, BPIPIN_29,  //4, 5
  BPIPIN_31, BPIPIN_26,  //6, 7
  BPIPIN_24, BPIPIN_21,  //8, 9
  BPIPIN_19, BPIPIN_23,  //10, 11
  BPIPIN_32, BPIPIN_33,  //12, 13
  BPIPIN_08, BPIPIN_10,  //14, 15
  BPIPIN_36, BPIPIN_11,  //16, 17
  BPIPIN_12, BPIPIN_35,	 //18, 19
  BPIPIN_38, BPIPIN_40,  //20, 21
  BPIPIN_15, BPIPIN_16,  //22, 23
  BPIPIN_18, BPIPIN_22,  //24, 25
  BPIPIN_37, BPIPIN_13,  //26, 27
  -1, -1,
  -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // ... 47
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // ... 63
} ;

//map phys_num(index) to bp gpio_num(element)
const int physToGpio_BP [64] =
{
          -1,                //0
          -1,        -1,     //1, 2
   BPIPIN_03,        -1,     //3, 4
   BPIPIN_05,        -1,     //5, 6
   BPIPIN_07, BPIPIN_08,     //7, 8
          -1, BPIPIN_10,     //9, 10
   BPIPIN_11, BPIPIN_12,     //11, 12
   BPIPIN_13,        -1,     //13, 14
   BPIPIN_15, BPIPIN_16,     //15, 16
          -1, BPIPIN_18,     //17, 18
   BPIPIN_19,        -1,     //19, 20
   BPIPIN_21, BPIPIN_22,     //21, 22
   BPIPIN_23, BPIPIN_24,     //23, 24
          -1, BPIPIN_26,     //25, 26
   BPIPIN_27, BPIPIN_28,     //27, 28
   BPIPIN_29,        -1,     //29, 30
   BPIPIN_31, BPIPIN_32,     //31, 32      
   BPIPIN_33,        -1,     //33, 34
   BPIPIN_35, BPIPIN_36,     //35, 36
   BPIPIN_37, BPIPIN_38,     //37, 38
          -1, BPIPIN_40,     //39, 40
   -1,   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, //41-> 55
   -1,   -1, -1, -1, -1, -1, -1, -1 // 56-> 63
} ;
#endif

#include "bpi-m1-m1p-r1.h"
#include "bpi-m2.h"
#include "bpi-m2p.h"
#include "bpi-m2u.h"
#include "bpi-m2m.h"
#include "bpi-m3.h"
#include "bpi-m64.h"
#endif

